//
//  NSDate+Sina.swift
//  43.新浪日期处理
//
//  Created by gzxzmac on 16/3/30.
//  Copyright © 2016年 gzxzmac. All rights reserved.
//

import Foundation

extension NSDate {
    /// 新浪的时间字符串转成系统的NSDate
    class func dateWithSinaString(dateString: String) -> NSDate {

        let df = NSDateFormatter()
        // 设置要转换的字符串的格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        // 在真机上还需要制定local
        df.locale = NSLocale(localeIdentifier: "EN")
        // 转成NSDate
        let date = df.dateFromString(dateString) ?? NSDate()    // NSDate()当前时间
        
        return date
    }
    
    /*
        刚刚(一分钟内)
        X分钟前(一小时内)
        X小时前(当天)
        昨天 HH:mm(昨天)
        MM-dd HH:mm(一年内)
        yyyy-MM-dd HH:mm(更早期)
    */
    /// 用新浪返回的时间和系统时间比较,可以理解self是新浪返回的时间
    func sinaDateDescripiton() -> String {
        // 时间比较: NSCalendar
        let calendar = NSCalendar.currentCalendar()

        // 是否是当天
        if calendar.isDateInToday(self) {
            // 获取新浪时间和当前时间相差的秒数
            let timeInterval = Int(NSDate().timeIntervalSinceDate(self))
//            print("timeInterval: \(timeInterval)")
            if timeInterval < 60 {
                // 刚刚(一分钟内)
                return "刚刚"
            } else if timeInterval < 60 * 60 {
                // X分钟前(一小时内)
                return "\(timeInterval / 60)分钟前"
            } else {
                // X小时前(当天)
                return "\(timeInterval / 60 / 60)小时前"
            }
        }
        
        // 后面3中都需要日期格式化
        var formatter = ""
        
        // 是否是昨天
        if calendar.isDateInYesterday(self) {
            formatter = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame { // 同一年
            // 判断一年内和和更早期
            // NSDate(): 当前时间
            // 2016-3-30 , 2015-12-31
            // NSComparisonResult:
            formatter = "MM-dd HH:mm"
        } else {
            formatter = "yyyy-MM-dd HH:mm"
        }
        
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "EN")
        df.dateFormat = formatter
        return df.stringFromDate(self)
    }
}